package com.example.daytest.porxy.dynamic.jdk;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * @author heyu
 * @title: DebugInvocationHandler
 * @description:代理类中的真实对象
 * @date 2021/5/18下午9:50
 */
public class DebugInvocationHandler implements InvocationHandler {

  private final Object target;

  public DebugInvocationHandler(Object target) {
    this.target = target;
  }

  @Override
  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    // 调用方法之前，我们可以添加自己的操作
    System.out.println("jdk动态代理之前的打印 " + method.getName());
    Object result = method.invoke(target, args);
    // 调用方法之后，我们同样可以添加自己的操作
    System.out.println("jdk动态代理之后的打印" + method.getName());
    return result;
  }
}
